
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Agent Prompt - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>Agent Prompt - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">AI 编程助手在解决用户编码任务时的核心工作原则是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">AI 编程助手的核心工作原则是作为一个“代理”（agent），持续工作直到用户的查询被完全解决，然后才结束回合并将控制权交还给用户。其主要目标是遵循用户在每个消息中给出的指令。</div>
          </div>
          <div class="card-source">来源: 文档中关于AI角色的初始描述部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">在使用语义搜索工具探索代码库时，推荐的首要策略是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">推荐的首要策略是，从一个宽泛、高层次的查询开始，以捕捉整体意图（例如“认证流程”），而不是从低层次的术语开始。这有助于在深入具体细节之前获得对代码库的整体理解。</div>
          </div>
          <div class="card-source">来源: 文档中「maximize_context_understanding」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在使用 `edit_file` 工具提出代码更改时，应如何表示文件中未被修改的部分？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">在提出代码更改时，必须使用特定语言的注释（例如 `// ... existing code ...`）来表示所有未更改的代码。绝不能直接写出或重复未更改的代码行，以避免模型误删代码。</div>
          </div>
          <div class="card-source">来源: 文档中「functions.edit_file」工具的描述</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在选择代码搜索工具时，`codebase_search` 和 `grep_search` 的适用场景有何不同？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`codebase_search` 适用于语义搜索，当你需要按“意义”查找代码时使用（例如，询问“认证如何工作？”）。而 `grep_search` 适用于精确的文本匹配或正则表达式搜索，当你已经知道要查找的确切符号、函数名等时优先使用。</div>
          </div>
          <div class="card-source">来源: 文档中「functions.codebase_search」和「functions.grep_search」工具的描述</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">当用户提供的信息与 AI 的“记忆”相矛盾时，AI 必须执行什么关键操作？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">如果用户提供的信息与现有记忆相矛盾，AI 必须立即使用 `update_memory` 工具并设置 `action` 为 'delete' 来删除该记忆。在这种情况下，删除记忆优先于更新它。</div>
          </div>
          <div class="card-source">来源: 文档中「memories」部分和「functions.update_memory」工具的描述</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">当 AI 在其生成的内容中使用了“记忆”时，它必须遵循什么引用规范？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">当使用记忆时，AI 必须始终以 `[[memory:MEMORY_ID]]` 的格式引用该记忆。这个引用应该自然地融入到回复中，而不是作为脚注。</div>
          </div>
          <div class="card-source">来源: 文档中「memory_citation」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">`codebase_search` 工具的 `target_directories` 参数有哪些使用限制？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">该参数只允许提供一个目录或文件路径，不支持多个路径、glob 模式或通配符。如果想在整个代码仓库中搜索，应提供一个空数组 `[]`。</div>
          </div>
          <div class="card-source">来源: 文档中「functions.codebase_search」工具的“Target Directories”部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">在哪些情况下，AI 助手应该主动使用 `todo_write` 工具来创建任务列表？请列举至少三种情况。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">AI 应该在以下情况主动使用该工具：1. 面对包含3个以上步骤的复杂多步任务；2. 当用户明确要求创建待办事项列表时；3. 在收到新的指令后，用它来捕捉和组织需求；4. 当用户一次性提供了多个任务时。</div>
          </div>
          <div class="card-source">来源: 文档中「functions.todo_write」工具的“When to Use This Tool”部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在无法通过其他方式获取信息时，AI 助手应如何通过工具获取外部的、最新的信息？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">当需要训练数据中可能不包含的最新信息或需要核实现实情况时，AI 助手应使用 `web_search` 工具。该工具可以用于搜索关于时事、技术更新等需要实时信息的主题。</div>
          </div>
          <div class="card-source">来源: 文档中「functions.web_search」工具的描述</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
